#include "head_cli.h"
/*

	传参查看当路径文件
*/
void lscli_cmd(void)
{
	system("clear");
	DIR *mydir = NULL;
	struct dirent *item = NULL;
	char buf[1024];
	//int i = 1;
	int line = 1;
	//打开目录流对象  
	
	mydir = opendir(".");
	if(NULL == mydir){
		perror("opendir");
		exit(1);
		}
	//2.从目录流对象中循环读取dirent列表项
	
	while((item = readdir(mydir)) != NULL){
		bzero(buf, 1024);
		//printf("line%d:%s\n",i,item->d_name);
		snprintf(buf, 1024, "line %d:%s\n",line++,item->d_name);
		printf("%s",buf);
		usleep(100000);
	}
	
	/*
	while(1){
		recv(fd buf)
		print buf
	}
	*/
	//3关闭目录流对象
	closedir(mydir);
}


/*
void srv_ls(int fd)   //客户端查看服务端的目录
{
	system("clear");
	int ret;
	char buf[1024];
	while(1){
		bzero(buf, 1024);
		ret = read(fd, buf, sizeof(buf));
		if(strncmp(buf, "over", 4) == 0)
		{
		 	break;
		}
		printf("%s", buf);
		if (ret<=0) {
			break;
		}
	}
}
*/

/**
 * ls_cmd函数用于通过socket连接到指定的服务器，并发送一个命令，列出服务器端的所有文件。
 *
 * @param addr 服务器的地址信息，类型为struct sockaddr_in。
 * @param cmd 用于发送到服务器的命令字符串。
 *
 * 该函数不返回任何值。
 */
void ls_cmd(struct sockaddr_in client, char *Cmd) {
	system("clear");
    int sockfd; // 创建socket使用的文件描述符
    int ret; // 用于存储函数返回值的临时变量

    // 清除终端屏幕，以便显示更整洁的输出
    

    // 创建一个TCP套接字，用于与服务器通信
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) {
        // 如果创建失败，打印错误信息并退出程序
        perror("socket");
        exit(1);
    }

    // 尝试连接到服务器
    ret = connect(sockfd, (struct sockaddr *)&client, sizeof(client));
    if (ret < 0) {
        // 如果连接失败，打印错误信息并退出程序
        perror("connect");
        exit(1);
    }  

    // 向服务器发送命令
    ret = send(sockfd, Cmd, strlen(Cmd), 0);
    if (ret < 0) {
        // 如果发送失败，打印错误信息并返回
        perror("send");
        return;
    }
    // 清零接收缓冲区，准备接收服务器的响应
    bzero(Cmd, N);
	
    // 打印标题，表示即将显示服务器的文件列表
    printf("服务端目录\n");

    // 循环接收服务器返回的文件名，直到没有更多数据
    while (recv(sockfd, Cmd, N, 0) > 0) {
        // 打印收到的文件名
        
        
        printf(PURPLE "****** %s\n" NONE, Cmd);
		//usleep(10000);
        // 清零接收缓冲区，准备接收下一个文件名
       	memset(Cmd, 0, N);
    }
	//printf(PURPLE "****** %s\n" NONE, Cmd);

    // 关闭与服务器的连接
    close(sockfd);
}


